Comparison SpatialDE genes

Comparison of top significant genes detected by SpatialDE (from script sce_spatialDE.Rmd from Stephanie Hicks) vs. our previous set of highly variable genes (HVGs).

Note that HVGs were previously calculated from all samples combined.

SpatialDE genes were calculated from sample 151673 only, with subsampling to 1500 spots due to slow runtime for SpatialDE (SpatialDE does not scale well with number of spots).

suppressPackageStartupMessages(library(SingleCellExperiment))
suppressPackageStartupMessages(library(readr))
suppressPackageStartupMessages(library(readxl))
suppressPackageStartupMessages(library(dplyr))
suppressPackageStartupMessages(library(reshape2))
suppressPackageStartupMessages(library(ggplot2))
suppressPackageStartupMessages(library(RColorBrewer))
suppressPackageStartupMessages(library(scales))

Load data: HVGs

Load original object containing HVGs, which were calculated from all samples combined.

# load scran output file
load("../../data/Human_DLPFC_Visium_processedData_sce_scran.Rdata")
sce
## class: SingleCellExperiment 
## dim: 33538 47681 
## metadata(1): image
## assays(2): counts logcounts
## rownames(33538): ENSG00000243485 ENSG00000237613 ... ENSG00000277475
##   ENSG00000268674
## rowData names(5): gene_id gene_version gene_name gene_source
##   gene_biotype
## colnames(47681): AAACAACGAATAGTTC-1 AAACAAGTATCTCCCA-1 ...
##   TTGTTTCCATACAACT-1 TTGTTTGTGTAAATTC-1
## colData names(19): barcode sample_name ... key cell_count
## reducedDimNames(6): PCA TSNE_perplexity50 ... TSNE_perplexity80
##   UMAP_neighbors15
## spikeNames(0):
## altExpNames(0):
# vector of top HVGs
head(top.hvgs)
## [1] "ENSG00000110484" "ENSG00000123560" "ENSG00000197971" "ENSG00000131095"
## [5] "ENSG00000124935" "ENSG00000211592"

Load data: SpatialDE

# load spreadsheet containing SpatialDE results
spatialDE_results <- read_csv("../../data/Human_DLPFC_Visium_processedData_sce_scran_spatialDE_results.csv")
## Warning: Missing column names filled in: 'X1' [1]
## Parsed with column specification:
## cols(
##   X1 = col_double(),
##   FSV = col_double(),
##   M = col_double(),
##   g = col_character(),
##   l = col_double(),
##   max_delta = col_double(),
##   max_ll = col_double(),
##   max_mu_hat = col_double(),
##   max_s2_t_hat = col_double(),
##   model = col_character(),
##   n = col_double(),
##   s2_FSV = col_double(),
##   s2_logdelta = col_double(),
##   time = col_double(),
##   BIC = col_double(),
##   max_ll_null = col_double(),
##   LLR = col_double(),
##   pval = col_double(),
##   qval = col_double()
## )

Comparison of gene lists

Compare list of HVGs vs. list of significant genes from SpatialDE.

# select significant genes from SpatialDE
spatialDE_sig <- filter(spatialDE_results, qval < 0.05)
spatialDE_sig_genes <- spatialDE_sig$g

head(spatialDE_sig_genes)
## [1] "ENSG00000158286" "ENSG00000175206" "ENSG00000163909" "ENSG00000173218"
## [5] "ENSG00000272824" "ENSG00000256029"
length(spatialDE_sig_genes)
## [1] 1924
# compare HVGs vs. significant genes from SpatialDE
head(top.hvgs)
## [1] "ENSG00000110484" "ENSG00000123560" "ENSG00000197971" "ENSG00000131095"
## [5] "ENSG00000124935" "ENSG00000211592"
head(spatialDE_sig_genes)
## [1] "ENSG00000158286" "ENSG00000175206" "ENSG00000163909" "ENSG00000173218"
## [5] "ENSG00000272824" "ENSG00000256029"
length(top.hvgs)
## [1] 1942
length(spatialDE_sig_genes)
## [1] 1924
sum(spatialDE_sig_genes %in% top.hvgs)
## [1] 742
sum(top.hvgs %in% spatialDE_sig_genes)
## [1] 742

SpatialDE results

Histogram of p-values. Note that a large number of genes have p-values exactly equal to zero.

hist(spatialDE_sig$qval)

# number of genes with p-value (or q-value) equal to 0
sum(spatialDE_sig$pval == 0)
## [1] 387
sum(spatialDE_sig$qval == 0)
## [1] 387

Plots: SpatialDE

Create plots showing expression (UMI counts) of the top significant genes from Spatial DE, for sample 151673.

First do some additional filtering. The SpatialDE top significant genes include some genes with very low UMI counts; and also include some mitochondrial genes. Include additional filtering here to: (i) remove genes with low UMI counts (e.g. using a threshold of 2000 total UMIs per sample), and (ii) remove mitochondrial genes (gene names starting with “MT-”).

Note: the filtering threshold removes a number of white matter marker genes. If these are of interest, could try lowering the threshold.

Plots are shown for all genes with q-values equal to 0 that also pass the additional filtering. Since these q-values are all exactly equal to 0, it is not possible to rank among these genes.

# select spots from sample 151673 only
ix_151673 <- colData(sce)$sample_name == 151673
table(ix_151673)
## ix_151673
## FALSE  TRUE 
## 44042  3639
sce_151673 <- sce[, ix_151673]
sce_151673
## class: SingleCellExperiment 
## dim: 33538 3639 
## metadata(1): image
## assays(2): counts logcounts
## rownames(33538): ENSG00000243485 ENSG00000237613 ... ENSG00000277475
##   ENSG00000268674
## rowData names(5): gene_id gene_version gene_name gene_source
##   gene_biotype
## colnames(3639): AAACAAGTATCTCCCA-1 AAACAATCTACTAGCA-1 ...
##   TTGTTTGTATTACACG-1 TTGTTTGTGTAAATTC-1
## colData names(19): barcode sample_name ... key cell_count
## reducedDimNames(6): PCA TSNE_perplexity50 ... TSNE_perplexity80
##   UMAP_neighbors15
## spikeNames(0):
## altExpNames(0):
# extract x-y coordinates of spots (note: y coordinate is reversed)
xy_coords <- data.frame(
    x_coord = colData(sce_151673)[, c("imagecol")], 
    y_coord = -colData(sce_151673)[, c("imagerow")]
)

# select top significant genes from SpatialDE (q-values exactly equal to 0)
spatialDE_top <- filter(spatialDE_sig, qval == 0)
spatialDE_top
## # A tibble: 387 x 19
##       X1   FSV     M g         l max_delta max_ll max_mu_hat max_s2_t_hat model
##    <dbl> <dbl> <dbl> <chr> <dbl>     <dbl>  <dbl>      <dbl>        <dbl> <chr>
##  1  8326 0.989     4 ENSG…  5.83 0.0113     3146.      0.504       0.0922 SE   
##  2  8352 1.000     4 ENSG…  5.83 0.0000454  4792.      0.503       0.0912 SE   
##  3  8364 1.000     4 ENSG…  5.83 0.0000454  4779.      0.499       0.0897 SE   
##  4  8365 1.000     4 ENSG…  5.83 0.0000454  4033.      0.502       0.0911 SE   
##  5  8368 1.000     4 ENSG…  5.83 0.0000454  4092.      0.497       0.0892 SE   
##  6  8373 1.000     4 ENSG…  5.83 0.0000454  3766.      0.509       0.0937 SE   
##  7  8389 1.000     4 ENSG…  5.83 0.0000454  4055.      0.499       0.0901 SE   
##  8  8394 1.000     4 ENSG…  5.83 0.0000454  4743.      0.499       0.0898 SE   
##  9  8408 1.000     4 ENSG…  5.83 0.0000454  4087.      0.504       0.0918 SE   
## 10  8412 1.000     4 ENSG…  5.83 0.0000454  4051.      0.497       0.0892 SE   
## # … with 377 more rows, and 9 more variables: n <dbl>, s2_FSV <dbl>,
## #   s2_logdelta <dbl>, time <dbl>, BIC <dbl>, max_ll_null <dbl>, LLR <dbl>,
## #   pval <dbl>, qval <dbl>
dim(spatialDE_top)
## [1] 387  19
# alternatively: rank genes
# spatialDE_sig <- mutate(spatialDE_sig, rank = rank(qval, ties.method = "first"))
# n_top <- 10
# spatialDE_top <- filter(spatialDE_sig, rank <= n_top)

# get top genes
spatialDE_top_genes <- spatialDE_top$g
head(spatialDE_top_genes)
## [1] "ENSG00000122420" "ENSG00000272721" "ENSG00000182952" "ENSG00000271754"
## [5] "ENSG00000229921" "ENSG00000228434"
# get expression levels (UMI counts) for top significant genes from SpatialDE
exprs_151673_spatialDE_top <- counts(sce_151673)[spatialDE_top_genes, ]
dim(exprs_151673_spatialDE_top)
## [1]  387 3639
# replace gene symbols with names
gene_names <- rowData(sce_151673)$gene_name
names(gene_names) <- rowData(sce_151673)$gene_id
gene_names_keep <- gene_names[rownames(exprs_151673_spatialDE_top)]
stopifnot(length(gene_names_keep) == nrow(exprs_151673_spatialDE_top))
rownames(exprs_151673_spatialDE_top) <- unname(gene_names_keep)

genes_SpatialDE <- rownames(exprs_151673_spatialDE_top)
head(genes_SpatialDE)
## [1] "PTGFR"      "AC131235.3" "HMGN4"      "AL355802.2" "KIF25-AS1" 
## [6] "AC004951.1"
length(genes_SpatialDE)
## [1] 387
# filtering: remove genes with low total UMI counts (across all spots)
n_filt <- 2000
ix_keep <- rowSums(exprs_151673_spatialDE_top) >= n_filt
table(ix_keep)
## ix_keep
## FALSE  TRUE 
##   210   177
exprs_151673_spatialDE_top <- exprs_151673_spatialDE_top[ix_keep, , drop = FALSE]
dim(exprs_151673_spatialDE_top)
## [1]  177 3639
# match to spots and set up data frame for ggplot2
stopifnot(all(colData(sce_151673)$barcode == rownames(t(exprs_151673_spatialDE_top))))
stopifnot(length(colData(sce_151673)$barcode) == length(rownames(t(exprs_151673_spatialDE_top))))

# filtering: remove mitochondrial genes
ix_mito <- grep("^MT-", rownames(exprs_151673_spatialDE_top))
rownames(exprs_151673_spatialDE_top)[ix_mito]
##  [1] "MT-ND2"  "MT-ND1"  "MT-CO1"  "MT-CO2"  "MT-ATP6" "MT-CO3"  "MT-ND4" 
##  [8] "MT-CYB"  "MT-ND3"  "MT-ND5"  "MT-ATP8"
exprs_151673_spatialDE_top <- exprs_151673_spatialDE_top[-ix_mito, , drop = FALSE]
dim(exprs_151673_spatialDE_top)
## [1]  166 3639
genes_SpatialDE_filt <- rownames(exprs_151673_spatialDE_top)
head(genes_SpatialDE_filt)
## [1] "IGKC"    "HBB"     "SCGB2A2" "MGP"     "NEFH"    "PCP4"
length(genes_SpatialDE_filt)
## [1] 166
# set up plot
d_plot <- cbind(
    barcode = colData(sce_151673)$barcode, 
    xy_coords, 
    as.data.frame(as.matrix(t(exprs_151673_spatialDE_top)))
)

d_plot[1:6, 1:6]
##                               barcode  x_coord   y_coord IGKC HBB SCGB2A2
## AAACAAGTATCTCCCA-1 AAACAAGTATCTCCCA-1 440.6391 -381.0981    4   0       7
## AAACAATCTACTAGCA-1 AAACAATCTACTAGCA-1 259.6310 -126.3276    0   0       1
## AAACACCAATAACTGC-1 AAACACCAATAACTGC-1 183.0783 -427.7678    1   2       5
## AAACAGAGCGACTCCT-1 AAACAGAGCGACTCCT-1 417.2367 -186.8137    0   0       2
## AAACAGCTTTCAGAAG-1 AAACAGCTTTCAGAAG-1 152.7003 -341.2691    8   0      11
## AAACAGGGTCTATATT-1 AAACAGGGTCTATATT-1 164.9415 -362.9163    1   0      12
d_plot <- melt(
    d_plot, 
    id.vars = c("barcode", "x_coord", "y_coord"), 
    variable.name = "gene_name", 
    value.name = "UMIs"
)

head(d_plot)
##              barcode  x_coord   y_coord gene_name UMIs
## 1 AAACAAGTATCTCCCA-1 440.6391 -381.0981      IGKC    4
## 2 AAACAATCTACTAGCA-1 259.6310 -126.3276      IGKC    0
## 3 AAACACCAATAACTGC-1 183.0783 -427.7678      IGKC    1
## 4 AAACAGAGCGACTCCT-1 417.2367 -186.8137      IGKC    0
## 5 AAACAGCTTTCAGAAG-1 152.7003 -341.2691      IGKC    8
## 6 AAACAGGGTCTATATT-1 164.9415 -362.9163      IGKC    1
# max UMI count for color scale
max(exprs_151673_spatialDE_top)
## [1] 195
# generate plots
ggplot(d_plot, aes(x = x_coord, y = y_coord, color = UMIs)) + 
    facet_wrap(~ gene_name) + 
    geom_point(size = 0.1, alpha = 1) + 
    scale_color_gradientn(colors = c("gray90", "red", "yellow", "blue", "black"), 
                          values = rescale(c(0, 10, 20, 100, 195))) + 
    coord_fixed() + 
    theme_bw() + 
    ggtitle("UMIs of top SpatialDE genes for sample 151673")

filename <- "../plots/spatialDE/spatialDE_top_genes_151673.png"
ggsave(filename, width = 12, height = 16)

Compare with known marker genes

Compare with list of known marker genes from Kristen Maynard.

Marker genes are saved in spreadsheet KRM_Layer_Markers.xlsx.

# load names of marker genes
KRM_Layer_Markers <- read_xlsx("KRM_Layer_Markers.xlsx")
KRM_Layer_Markers
## # A tibble: 81 x 11
##    Paper Gene      `1`   `2`   `3`   `4`   `5`   `6`  `6b`    WM Species
##    <chr> <chr>   <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <chr>  
##  1 Zeng  C4orf31     1     0     0     0     0     0     0     0 MH     
##  2 Zeng  Chrna7      1     1     0     0     0     0     0     0 MH     
##  3 Zeng  Cnr1        1     1     0     0     0     1     0     0 MH     
##  4 Zeng  Cxcl14      1     1     0     0     0     0     0     0 MH     
##  5 Zeng  Reln        1     0     0     0     0     0     0     0 MH     
##  6 Zeng  Inpp4b      1     1     1     0     0     0     0     0 MH     
##  7 Zeng  Gsg1L       0     1     1     0     0     1     0     0 MH     
##  8 Zeng  Igsf11      0     1     1     0     0     0     0     0 MH     
##  9 Zeng  Kcnip2      0     1     1     0     0     0     0     0 MH     
## 10 Zeng  Pvrl3       0     1     0     0     0     0     0     0 MH     
## # … with 71 more rows
dim(KRM_Layer_Markers)
## [1] 81 11
marker_genes <- KRM_Layer_Markers$Gene
length(marker_genes)
## [1] 81
# how many of these marker genes are in the SpatialDE list (without filtering)
# note: upper case / lower case
sum(toupper(marker_genes) %in% toupper(genes_SpatialDE))
## [1] 4
sum(toupper(genes_SpatialDE) %in% toupper(marker_genes))
## [1] 4
# how many of these marker genes are in the SpatialDE list (with filtering)
# note: upper case / lower case
sum(toupper(marker_genes) %in% toupper(genes_SpatialDE_filt))
## [1] 4
sum(toupper(genes_SpatialDE_filt) %in% toupper(marker_genes))
## [1] 4

Plots: known marker genes (3 only)

Compare to plots showing expression (UMI counts) of known marker genes.

First showing only SNAP25, MOBP, and PCP4 (marker genes from Kristen Maynard’s slide presentation).

Note: could also compare with expression of some of the top HVGs (however would need q-values for the HVGs to do this).

# choose marker genes and get expression levels (UMI counts)
marker_genes_3 <- c("SNAP25", "MOBP", "PCP4")

# also check if these are in SpatialDE lists
sum(toupper(marker_genes_3) %in% toupper(genes_SpatialDE))
## [1] 3
sum(toupper(marker_genes_3) %in% toupper(genes_SpatialDE_filt))
## [1] 3
ix_marker_genes_3 <- match(marker_genes_3, rowData(sce_151673)$gene_name)
exprs_marker_genes_3 <- counts(sce_151673)[ix_marker_genes_3, , drop = FALSE]

# use gene names instead of symbols
stopifnot(nrow(exprs_marker_genes_3) == length(marker_genes_3))
rownames(exprs_marker_genes_3) <- marker_genes_3
dim(exprs_marker_genes_3)
## [1]    3 3639
# match to spots and set up data frame for ggplot2
stopifnot(all(colData(sce_151673)$barcode == rownames(t(exprs_marker_genes_3))))
stopifnot(length(colData(sce_151673)$barcode) == length(rownames(t(exprs_marker_genes_3))))

d_plot <- cbind(
    barcode = colData(sce_151673)$barcode, 
    xy_coords, 
    as.data.frame(as.matrix(t(exprs_marker_genes_3)))
)

d_plot[1:6, 1:6]
##                               barcode  x_coord   y_coord SNAP25 MOBP PCP4
## AAACAAGTATCTCCCA-1 AAACAAGTATCTCCCA-1 440.6391 -381.0981     16    1    0
## AAACAATCTACTAGCA-1 AAACAATCTACTAGCA-1 259.6310 -126.3276      8    0    1
## AAACACCAATAACTGC-1 AAACACCAATAACTGC-1 183.0783 -427.7678      4    7    0
## AAACAGAGCGACTCCT-1 AAACAGAGCGACTCCT-1 417.2367 -186.8137     17    2    1
## AAACAGCTTTCAGAAG-1 AAACAGCTTTCAGAAG-1 152.7003 -341.2691     10    1    0
## AAACAGGGTCTATATT-1 AAACAGGGTCTATATT-1 164.9415 -362.9163     14    3    2
d_plot <- melt(
    d_plot, 
    id.vars = c("barcode", "x_coord", "y_coord"), 
    variable.name = "gene_id", 
    value.name = "UMIs"
)

head(d_plot)
##              barcode  x_coord   y_coord gene_id UMIs
## 1 AAACAAGTATCTCCCA-1 440.6391 -381.0981  SNAP25   16
## 2 AAACAATCTACTAGCA-1 259.6310 -126.3276  SNAP25    8
## 3 AAACACCAATAACTGC-1 183.0783 -427.7678  SNAP25    4
## 4 AAACAGAGCGACTCCT-1 417.2367 -186.8137  SNAP25   17
## 5 AAACAGCTTTCAGAAG-1 152.7003 -341.2691  SNAP25   10
## 6 AAACAGGGTCTATATT-1 164.9415 -362.9163  SNAP25   14
# max UMI count for color scale
max(exprs_marker_genes_3)
## [1] 85
# generate plots
ggplot(d_plot, aes(x = x_coord, y = y_coord, color = UMIs)) + 
    facet_wrap(~ gene_id) + 
    geom_point(size = 0.8, alpha = 1) + 
    scale_color_gradientn(colors = c("gray90", "red", "yellow", "blue"), 
                          values = rescale(c(0, 10, 20, 85))) + 
    coord_fixed() + 
    theme_bw() + 
    ggtitle("UMIs of known marker genes for sample 151673")

filename <- "../plots/spatialDE/marker_genes_3_151673.png"
ggsave(filename, width = 11, height = 5)

Plots: known marker genes (all)

All 81 marker genes (from Kristen Maynard’s spreadsheet).

Note: many of these genes are markers for multiple layers.

Note: not all of these genes are available for sample 151673 (77 out of 81).

# choose marker genes and get expression levels (UMI counts)
# note: upper case / lower case
marker_genes_all <- toupper(marker_genes)
head(marker_genes_all)
## [1] "C4ORF31" "CHRNA7"  "CNR1"    "CXCL14"  "RELN"    "INPP4B"
length(marker_genes_all)
## [1] 81
# note: not all of these genes are available for sample 151673
ix_marker_genes_all <- match(marker_genes_all, rowData(sce_151673)$gene_name)
sum(is.na(ix_marker_genes_all))
## [1] 4
# remove missing genes
which_na <- is.na(ix_marker_genes_all)

ix_marker_genes_all <- ix_marker_genes_all[!which_na]
length(ix_marker_genes_all)
## [1] 77
# check which ones were missing and update gene names
marker_genes_all[which_na]
## [1] "C4ORF31"   "PVRL3"     "C20ORF103" "KIAA1456"
marker_genes_all <- marker_genes_all[!which_na]
length(marker_genes_all)
## [1] 77
exprs_marker_genes_all <- counts(sce_151673)[ix_marker_genes_all, , drop = FALSE]
dim(exprs_marker_genes_all)
## [1]   77 3639
# use gene names instead of symbols
stopifnot(nrow(exprs_marker_genes_all) == length(marker_genes_all))
rownames(exprs_marker_genes_all) <- marker_genes_all
dim(exprs_marker_genes_all)
## [1]   77 3639
# match to spots and set up data frame for ggplot2
stopifnot(all(colData(sce_151673)$barcode == rownames(t(exprs_marker_genes_all))))
stopifnot(length(colData(sce_151673)$barcode) == length(rownames(t(exprs_marker_genes_all))))

d_plot <- cbind(
    barcode = colData(sce_151673)$barcode, 
    xy_coords, 
    as.data.frame(as.matrix(t(exprs_marker_genes_all)))
)

d_plot[1:6, 1:6]
##                               barcode  x_coord   y_coord CHRNA7 CNR1 CXCL14
## AAACAAGTATCTCCCA-1 AAACAAGTATCTCCCA-1 440.6391 -381.0981      0    0      3
## AAACAATCTACTAGCA-1 AAACAATCTACTAGCA-1 259.6310 -126.3276      0    1      0
## AAACACCAATAACTGC-1 AAACACCAATAACTGC-1 183.0783 -427.7678      0    0      0
## AAACAGAGCGACTCCT-1 AAACAGAGCGACTCCT-1 417.2367 -186.8137      0    0      0
## AAACAGCTTTCAGAAG-1 AAACAGCTTTCAGAAG-1 152.7003 -341.2691      0    0      0
## AAACAGGGTCTATATT-1 AAACAGGGTCTATATT-1 164.9415 -362.9163      0    0      0
d_plot <- melt(
    d_plot, 
    id.vars = c("barcode", "x_coord", "y_coord"), 
    variable.name = "gene_id", 
    value.name = "UMIs"
)

head(d_plot)
##              barcode  x_coord   y_coord gene_id UMIs
## 1 AAACAAGTATCTCCCA-1 440.6391 -381.0981  CHRNA7    0
## 2 AAACAATCTACTAGCA-1 259.6310 -126.3276  CHRNA7    0
## 3 AAACACCAATAACTGC-1 183.0783 -427.7678  CHRNA7    0
## 4 AAACAGAGCGACTCCT-1 417.2367 -186.8137  CHRNA7    0
## 5 AAACAGCTTTCAGAAG-1 152.7003 -341.2691  CHRNA7    0
## 6 AAACAGGGTCTATATT-1 164.9415 -362.9163  CHRNA7    0
# max UMI count for color scale
max(exprs_marker_genes_all)
## [1] 75
# generate plots
ggplot(d_plot, aes(x = x_coord, y = y_coord, color = UMIs)) + 
    facet_wrap(~ gene_id) + 
    geom_point(size = 0.1, alpha = 1) + 
    scale_color_gradientn(colors = c("gray90", "red", "yellow", "blue"), 
                          values = rescale(c(0, 10, 20, 75))) + 
    coord_fixed() + 
    theme_bw() + 
    ggtitle("UMIs of known marker genes for sample 151673")

filename <- "../plots/spatialDE/marker_genes_all_151673.png"
ggsave(filename, width = 9, height = 11)

Comments

Some comments:

  • SpatialDE does not scale well with the number of spots, so we needed to subsample spots. However, we still used 1500 out of 3639 spots for sample 151673, so results should be reasonably robust.

  • HVGs were calculated using spots from all samples combined; while SpatialDE was run on spots from only a single sample (sample 151673), which will lead to some differences in the gene lists.

  • SpatialDE returned p-values exactly equal to 0 for a large number of genes (387), so it is difficult to rank SpatialDE genes.

  • A number of the genes detected by SpatialDE had very low UMI counts, so these were not likely to be meaningful marker genes. We have filtered these out (using a threshold of 2000 total UMIs per sample). We have also filtered out mitochondrial genes.

  • Most of the SpatialDE genes did not overlap with the list of known marker genes from Kristen Maynard (only 4 out of 81).

  • Of the 81 marker genes from Kristen, 77 were available in the SCE object for sample 151673. Also note that many of these are marker genes for multiple layers; the plots show them individually.

  • From looking at the plots of the SpatialDE genes, some possible marker genes for individual layers include: NEFH, PCP4, HPCAL1, HOPX, PPP3CA, ENC1, NEFM, DIRAS2, SNCG, FBXL16, CAMK2N1, CXCL14, MALAT1, NCDN

  • To do: check color scale is not distorting the plots visually; try using these genes for clustering